﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TPCN.DAL;
using TPCN.Common;
using TPCN.Commons;

namespace TPCN
{
    public partial class Thanhtoan : System.Web.UI.Page
    {
        private static string custommerID;
        private static ShoppingCartObj cart;
        private static KhachHangObj obj;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (isLogin())
            {
                if (!Page.IsPostBack)
                {
                    SetDefaultValue();
                    if (HttpContext.Current.Session["cart"] != null)
                    {
                        cart = (ShoppingCartObj)HttpContext.Current.Session["cart"];
                        if (cart.Count() == 0)
                            return;
                    }
                    else
                        return;
                    SetcboThanhtoanValue();
                }
                warningpanel.Visible = false;
                infopanel.Visible = true;
            }
            else
            {
                warningpanel.Visible = true;
                infopanel.Visible = false;
            }
        }

        protected void rdoDenlayhang_CheckedChanged(object sender, EventArgs e)
        {
            txtAddress.Enabled = !rdoDenlayhang.Checked;
            AddressValidator.Enabled = txtAddress.Enabled;
        }

        protected void SetDefaultValue()
        {
            txtName.Text = obj.Hovaten;
            txtPhone.Text = obj.Sodienthoai;
            txtAddress.Text = obj.Diachi;
        }

        protected void rdoGiaohangtainha_CheckedChanged(object sender, EventArgs e)
        {
            txtAddress.Enabled = rdoGiaohangtainha.Checked;
            AddressValidator.Enabled = txtAddress.Enabled;
        }

        protected void btnCheckout_Click(object sender, EventArgs e)
        {
            if (cart.Count() > 0)
            {
                DonDatHangObj ddh = new DonDatHangObj();
                ddh.Ngaylap = DateTime.Now.ToShortDateString();
                ddh.KhachID = custommerID;
                ddh.PhuongthucthanhtoanID = cboCheckout.SelectedValue;
                ddh.Active = "True";
                ddh.Hotennguoinhan = txtName.Text;
                ddh.Sodienthoai = txtPhone.Text;
                ddh.Diachinhanhang = txtAddress.Text;
                ddh.Ghichu = txtComment.Text;
                ddh.Hinhthucnhanhang = rdoDenlayhang.Checked ? Const.KEY_DELIVER_DEN_LAY_TRUC_TIEP : Const.KEY_DELIVER_GIAO_HANG_TAI_NHA;
                int id = DonDatHangDAL.Insert(ddh);

                //Them trang thai cho don hang
                DonHangTrangThaiDonHangObj trangthai = new DonHangTrangThaiDonHangObj();
                trangthai.DondathangID = id.ToString();
                trangthai.Ngaythaydoi = DateTime.Now.ToShortDateString();
                trangthai.NhanvienID = "1";
                trangthai.TrangthaiID = "1";
                DonHangTrangThaiDonHangDAL.Insert(trangthai);

                // Them san pham vao chi tiet don dat hang
                if (cart != null)
                {
                    for (int i = 0; i < cart.Count(); i++)
                    {

                        ChiTietDonDatHangObj tmp = new ChiTietDonDatHangObj();
                        tmp.DondathangID = id.ToString();
                        tmp.HangID = cart.Listproduct[i].HangID;
                        tmp.Soluong = cart.Listproduct[i].Soluong.ToString();
                        //HangDAL.UpdateCount(tmp.HangID, Int32.Parse(tmp.Soluong));
                        tmp.Ghichu = txtComment.Text;
                        ChiTietDonDatHangDAL.Insert(tmp);
                        tmp = null;
                    }
                }
                ConfigObj cfg = ConfigDAL.GetByAll()[0];
                string noreply_email = cfg.NoreplyMail;
                string noreply_pass = cfg.NoreplyPass;
                string sale_mail = cfg.SaleEmail;
                string customer_email = obj.Email;
                string emailbody = String.Empty;
                emailbody += "<div style=\"font-weight:700;margin: 10px 0;\">THÔNG TIN ĐẶT HÀNG</div><hr /><br />";
                emailbody += GenerateInfo();
                emailbody += "<div style=\"font-weight:700; margin:10px 0 10px;\">THÔNG TIN ĐƠN HÀNG</div><hr /><br />";
                emailbody += GenerateTable(cart);
                emailbody += "<div style=\"width:100%; margin: 20px 0px; padding: 10px;background-color:#e1f2fc;border:1px solid #cadcea; color:#225b86;\">Chúng tôi sẽ liên hệ lại với bạn theo số điện thoại được cung cấp để xác nhận đơn hàng trong thời gian sớm nhất! Chân thành cảm ơn!</div>";
                EmailHelper.SendMail(EmailHelper.EmailType.YAHOO, noreply_email, noreply_pass, customer_email, sale_mail, "[TPCN] - Đơn đặt hàng", emailbody);
                ResetSessionKey();
                Response.Redirect("~");
            }
        }

        protected string GenerateTable(ShoppingCartObj obj)
        {
            string table = String.Empty;
            table += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"10\">";
            table += "<tr style=\"background-color:#CCCCCC; text-align:left;\"><th>STT</th><th>Tên sản phẩm</th><th>Đơn giá</th><th>Số lượng</th><th>Thành tiền</th></tr>";
            for (int i = 0; i < obj.Count(); i++)
            {
                table += "<tr>";
                table += "<td>" + (i + 1).ToString() + ".</td>";
                table += "<td>" + obj.Listproduct[i].Tenhang.ToString() + "</td>";
                table += "<td>" + obj.Listproduct[i].Dongia.ToString() + "</td>";
                table += "<td>" + obj.Listproduct[i].Soluong.ToString() + "</td>";
                table += "<td>" + obj.Listproduct[i].Thanhtien.ToString() + "</td>";
                table += "</tr>";
            }
            table += "</table>";
            return table;
        }

        protected void ResetSessionKey()
        {
            HttpContext.Current.Session["cart"] = null;
        }

        protected bool isLogin()
        {
            if (HttpContext.Current.Session["user"] != null)
            {
                custommerID = HttpContext.Current.Session["user"].ToString();
                obj = KhachHangDAL.GetByID(custommerID);
                return (obj != null);
            }
            return false;
        }

        protected string GenerateInfo()
        {
            string info = String.Empty;
            info += "Tên người nhận hàng : " + txtName.Text;
            info += "<br /><br />";
            info += "Điện thoại liên hệ : " + txtPhone.Text;
            info += "<br /><br />";
            info += "Hình thức nhận hàng : " + (rdoDenlayhang.Checked ? "Đến lấy trực tiếp" : "Giao hàng tại nhà");
            info += "<br /><br />";
            if (rdoGiaohangtainha.Checked)
            {
                info += "Địa chỉ nhận hàng : " + txtAddress.Text;
                info += "<br /><br />";
            }
            info += "Hình thức thanh toán : " + cboCheckout.Text;
            info += "<br /><br />";
            if (txtComment.Text.Trim() != "")
            {
                info += "Ghi chú : " + txtComment.Text;
                info += "<br /><br />";
            }
            return info;
        }

        protected void SetcboThanhtoanValue()
        {
            cboCheckout.Items.Add(new ListItem("----- Chọn phương thức thanh toán -----", "0"));
            cboCheckout.Items.Add(new ListItem("Thanh toán bằng tiền mặt", Const.KEY_PAYMENT_MONEY));
            cboCheckout.Items.Add(new ListItem("Chuyển khoản ngân hàng", Const.KEY_PAYMENT_ATM));
            cboCheckout.Items.Add(new ListItem("Khác", Const.KEY_PAYMENT_OTHER));
        }
    }
}